package com.cat.chapter045;

import java.util.HashSet;

/**
 * @author cat
 * @description https://leetcode.cn/problems/ms70jA/
 * @create 2025/7/14 16:10
 * @since JDK17
 */

public class Solution03 {
    public int findMaximumXOR(int[] nums) {
        int max = Integer.MIN_VALUE;
        int ans = 0;
        for (int num : nums) {  // 找到最大值
            max = Math.max(max, num);
        }
        HashSet<Integer> set = new HashSet<>();
        for (int i = 31 - Integer.numberOfLeadingZeros(max); i >= 0; i--) {
            int better = ans | (1 << i);    // 想要的数字
            set.clear();
            for (int num : nums) {
                set.add(num);   // 将这个数字加入到set
                if (set.contains(better ^ num)) {   // 存在这个数字
                    ans = better;
                    break;
                }
            }
        }
        return ans;
    }
}